/**
 *
 * @author cuntmaster
 */
package erp.projekt;

import java.sql.*;
import java.util.*;

public class SqlProdukte {

    private static final String CONN_USER = "erpworker";
    private static final String CONN_PASSWORD = "erpworker";
    private static final String CONN_HOST = "10.4.101.125";
    private static final int CONN_PORT = 3306;
    private static final String CONN_DB = "erp";
    private static Connection conn = null;
    private static Statement stmnt = null;
    ResultSet result;
    List<String> produkt = new ArrayList<>();
    List<String> produkte = new ArrayList<>();

    public SqlProdukte() throws SQLException {
        this.connectDB();
    }

    private void connectDB() {
        try {
            // Datenbanktreiber für ODBC Schnittstellen laden.
            Class.forName("com.mysql.jdbc.Driver");
            // Verbindung zur ODBC-Datenbank
            conn = DriverManager.getConnection("jdbc:mysql://" + CONN_HOST + ":"
                    + CONN_PORT + "/" + CONN_DB + "?" + "user=" + CONN_USER + "&"
                    + "password=" + CONN_PASSWORD);

            System.out.println("success");
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    public ArrayList<String> getProduktById(int ID) throws SQLException {

        if (conn != null) {
            try {
                String query = "SELECT * FROM tblprodukt WHERE ProduktId=" + ID;

                stmnt = conn.createStatement();

                result = stmnt.executeQuery(query);

                while (result.next()) {
                    produkt.add(result.getString("ProduktId"));
                    produkt.add(result.getString("ProduktBezeichnung"));
                    produkt.add(result.getString("ProduktGruppeId"));
                    produkt.add(result.getString("ProduktVerkaufspreis"));
                    produkt.add(result.getString("ProduktLieferantId"));
                    produkt.add(result.getString("ProduktEinkaufspreis"));
                    produkt.add(result.getString("ProduktLieferzeit"));
                    produkt.add(result.getString("ProduktMindestbestand"));
                    produkt.add(result.getString("ProduktHinweis"));
                    produkt.add(result.getString("ProduktMengeBestellt"));
                    produkt.add(result.getString("ProduktUmsatzsteuersatz"));
                    produkt.add(result.getString("ProduktAktiv"));
                    produkt.add(result.getString("ProduktInaktivAm"));
                    produkt.add(result.getString("ProduktInaktivVon"));
                }

            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
        return (ArrayList<String>) produkt;
    }

    public ArrayList<String> getProdukteByGruppe(String gruppenName) throws NullPointerException {
        ArrayList<String> produktNamen = null;

        if (conn != null) {
            try {
                String query = "SELECT ProduktBezeichnung FROM erp.produktabfrage WHERE ProduktGruppeText='" + gruppenName + "'";

                stmnt = conn.createStatement();
                result = stmnt.executeQuery(query);

                if (result.next()) {
                    produktNamen.add(result.getString("ProduktBezeichnung"));
                }
             

            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        
        else
                {
                    System.out.println("stop");
                }
        return produktNamen;
    }

    public void neuesProdukt(String bez, int grupId, double vp, int lieferId, double ep, String lz, int mb,
            String hinweis, int bestellt, double mwst, String aktiv, String inaktivam, String inaktivvon) {
        if (conn != null) {
            try {
                String query = "INSERT INTO erp.tblprodukt (`ProduktBezeichnung`,`ProduktGruppeId`,`ProduktVerkaufspreis`,`ProduktLieferantId`, `ProduktEinkaufspreis`, `ProduktLieferzeit`, `ProduktMindestbestand`, `ProduktHinweis`, `ProduktMengeBestellt`, `ProduktUmsatzsteuersatz`, `ProduktAktiv`, `ProduktInaktivAm`, `ProduktInaktivVon`) VALUES "
                        + "('" + bez + "'," + grupId + "," + vp + "," + lieferId + "," + ep + ",'" + lz + "'," + mb + "'" + hinweis + "'," + bestellt + "," + mwst + ",'" + aktiv + "','" + inaktivam + "','" + inaktivvon + "')";
                stmnt = conn.createStatement();
                stmnt.executeUpdate(query);
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    public List<String> getProdukte() throws SQLException {

        if (conn != null) {
            try {
                String query = "SELECT ProduktBezeichnung FROM erp.tblprodukt";

                stmnt = conn.createStatement();

                result = stmnt.executeQuery(query);

                while (result.next()) {
                    produkte.add(result.getString("ProduktBezeichnung"));
                }

            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
        return (List<String>) produkte;
    }

    public int getProdukteCount() {

        int countProdukte = 0;
        if (conn != null) {
            try {
                String query = "SELECT COUNT(ProduktId) FROM tblprodukt";
                stmnt = conn.createStatement();
                result = stmnt.executeQuery(query);

                while (result.next()) {
                    countProdukte = result.getInt("COUNT(ProduktId)");
                }

            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
        return countProdukte;
    }
}
